package org.nanotek;

import java.util.concurrent.Callable;
import org.nanotek.Task;

/**
 * 
 * @author josecanova
 *
 * @param <T> The task to be executed, it is not a delegate "method" because 
 * it is not defined a "specific signature method" to be executed by the task 
 * but define that the Object it is a task that executed certain "Task Object" 
 * inside a Known Contract Callable Interface. 
 * 
 * @param <V> The value of the return method on the Callable.call() completion.
 */
public interface CallableTask<T extends Task<T,V>, V> extends Task<T, V>, Callable<V> {

	public T getTask();
	
	@Override 
	public V call();
	
}
